#ifndef CUSTOMGRAPHICSVIEW_H
#define CUSTOMGRAPHICSVIEW_H

#include <QGraphicsView>
#include <QHash>
#include <QGraphicsItem>

class CustomGraphicsView : public QGraphicsView
{
	Q_OBJECT

public:
	explicit CustomGraphicsView(QObject *parent = 0);

protected:
	void mouseMoveEvent (QMouseEvent *event);
	void mousePressEvent (QMouseEvent *event);
	void mouseReleaseEvent (QMouseEvent *event);
	void keyPressEvent (QKeyEvent *event);
	void keyReleaseEvent (QKeyEvent *event);

private:
	void selectItemsWithShift (QPainterPath &area);
	void selectItemsWithCtrl (QPainterPath &area);
	// я не помню уже, почему именно так, но иначе не работает.
	// то есть элементарно повисает, и все.
	// спасибо костылю под названием QObject
	QGraphicsRectItem *rubberrect;
	QPoint startpos;
	bool rubberbanding;
	bool shiftKeyPressed, ctrlKeyPressed;
	//QHash<QGraphicsItem *, bool> *prevSelState;
};

#endif // CUSTOMGRAPHICSVIEW_H
